vec2 fixUV(vec2 cood){
  return 3.*(2.*cood.xy-iResolution.xy)/min(iResolution.x,iResolution.y);
}

vec3 Grid(vec2 uv){
  vec3 color=vec3(0.);
  // vec2 cell=fract(uv);
  // 0.0～0.5~1.0, 0.0~0.5~1.0
  // 转化过程
  // -0.5~0.0~0.5, -0.5~0.0~0.5
  // 0.5~0.0~0.5, 0.5~0.0~0.5
  // 1.0~0.0~1.0, 1.0~0.0~1.0
  
  // vec2 cell=fract(uv)-.5;
  // vec2 cell=abs(fract(uv)-.5);
  // vec2 cell=2.*abs(fract(uv)-.5);
  
  // 直到
  vec2 cell=1.-2.*abs(fract(uv)-.5);
  // 0.0~1.0~0.0, 0.0~1.0~0.0,
  
  // 每格之间的分界处由原本的1-0，变成了0-0，变化是连续的。这样画的图形才最准确。
  
  // if(cell.x<=fwidth(uv.x)||cell.y<=fwidth(uv.y)){
    //   color=vec3(1.);
  // }
  if(cell.x<=2.*fwidth(uv.x)||cell.y<=2.*fwidth(uv.y)){
    color=vec3(1.);
  }
  if(abs(uv.y)<fwidth(uv.y)){
    color=vec3(1.,0.,0.);
  }
  if(abs(uv.x)<fwidth(uv.x)){
    color=vec3(0.,1.,0.);
  }
  return color;
}

void mainImage(out vec4 fragColor,in vec2 fragCoord){
  vec2 vUv=fixUV(fragCoord);
  vec3 color=Grid(vUv);
  fragColor=vec4(color,1);
}